package com.clkj.sunhelp.mvp.base;

import android.os.Bundle;
import android.os.Handler;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.View;

import com.clkj.sunhelp.common.SharePreKey;
import com.clkj.sunhelp.util.CommonUtil;
import com.clkj.sunhelp.util.LogUtil;
import com.clkj.sunhelp.widget.LoadingProgressDialog;


/**
 * 1、3-8 懒加载功能
 * Created by Administrator on 2017/3/8.
 */

public abstract class BaseFragment extends Fragment {
    protected Handler mHandler = new Handler();


    //默认的是isFirstVisibles true ,刚进来的时候分两种情况
    //1.如果切过来的时候 setVisibleHint在OnCreate之前调用，那isFirstVisible为true，这个时候不进行任何操作；
    //等方法执行到onActivityCreated的时候，在执行一次setUserVisibleHint 这个时候把默认的是isFirstVisibles 设为false
    //然后这个时候调用setUserVISIBLEhINT为true  去获取数据
    //2.如果是后面再次切过来，那isFirstVisible已经为false，那就可以直接通过setUserVisibleHint获取数据了

    //代表这个界面是不是第一次被使用
    boolean isFirstUsed = true;

    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        //fragment 可见的情况下 进行加载数据。不可见则不加载
        if (getUserVisibleHint() == true) {
            if (isFirstUsed == true) {
                isFirstUsed = false;
                setUserVisibleHint(true);
            }
            //不可见，说明fragment已经初始话完成,就直接把isFirstVisible改为false 再次切过来的时候就直接可以加载数据了
        } else {
            isFirstUsed = false;
        }
    }


    @Override
    public void setUserVisibleHint(boolean isVisibleToUser) {
        super.setUserVisibleHint(isVisibleToUser);
        // LogUtil.e("CartVisible");
        if (getUserVisibleHint()) {
//            LogUtil.e("CourseListVisible");
            //如果不是firstvisible才去进行下面的操作  因为第一次很可能出现各种问题
            if (isFirstUsed == false) {

                /*if (isGetCommentList==false)
                {
                    getCommentList();
                }*/
                loadData();

            }
        } else {
            LogUtil.e("FragmentProductListGone");
        }
    }



    public abstract void initData();

    public abstract void assignView(View view);

    public abstract void initView();

    public abstract void loadData();


    LoadingProgressDialog progressDialog;

    public void showProgressDialog(boolean canBack, String loadingMsg) {
        if (progressDialog != null) {
            progressDialog.cancel();
        }

        progressDialog = new LoadingProgressDialog(getActivity(), loadingMsg);
        if (canBack) {
            progressDialog.setCancelable(true);
        } else {
            progressDialog.setCancelable(false);
        }
        progressDialog.show();
    }

    public void dismissProgressDialog() {
        if (null != progressDialog && progressDialog.isShowing()) {
            progressDialog.cancel();

        }
    }

    public boolean isLogin()
    {
        return (boolean) CommonUtil.getShareValue(SharePreKey.SP_KEY_LOGIN_TAG,false);
    }

}
